#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
package ${package}.basic.module.role.mapper;

import ${package}.common.bean.po.Role;
import ${package}.common.bean.po.User;
import ${package}.common.bean.po.UserUnionRole;
import ${package}.common.bean.vo.QueryBean;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * Description: 无法补充
 *
 * @author wupanhua
 * @date 2019/8/6 15:28
 *
 * <pre>
 *              ${copyright}
 *      Copyright (c) 2019. All Rights Reserved.
 * </pre>
 */
@Repository
public interface RoleMapper {

    /**
     * Description:
     * <根据用户名获取角色列表>
     * @author wupanhua
     * @date 10:43 2019/8/7
     * @param id 1
     * @return java.util.List<Role>
     **/
    List<Role> findRolesByUserKey(Long id);

    /**
     * Description:
     * <获取所有状态为启用的角色>
     * @author wupanhua
     * @date 10:44 2019/8/7
     * @return java.util.List<Role>
     **/
    List<Role> findAllRoleIsEnable();

    /**
     * Description:
     * <获取角色列表>
     * @author wupanhua
     * @date 10:44 2019/8/7
     * @param queryBean 1
     * @return java.util.List<Role>
     **/
    List<Role> findRoleListLimit(QueryBean queryBean);

    /**
     * Description:
     * <新增角色>
     * @author wupanhua
     * @date 10:44 2019/8/7
     * @param role 1
     **/
    void insertRole(Role role);

    /**
     * Description:
     * <根据主键删除角色>
     * @author wupanhua
     * @date 10:45 2019/8/7
     * @param id 1
     **/
    void deleteRoleByRoleKey(Long id);

    /**
     * Description:
     * <根据主键把角色状态置为禁用>
     * @author pig
     * @date 10:45 2019/8/7
     * @param id 1
     **/
    void updateRoleStatusDisable(Long id);

    /**
     * Description:
     * <更新role状态>
     * @author pig
     * @date 10:45 2019/8/7
     * @param role 1
     **/
    void updateRoleStatus(Role role);

    /**
     * Description:
     * <根据id查询角色信息>
     * @author pig
     * @date 10:46 2019/8/7
     * @param id 1
     * @return Role
     **/
    Role queryRolrById(Long id);

    /**
     * Description:
     * <根据id更新角色信息>
     * @author pig
     * @date 10:46 2019/8/7
     * @param role 1
     **/
    void updateRoleById(Role role);

    /**
     * Description:
     * <根据roleid主键列表批量获取角色>
     * @author pig
     * @date 10:46 2019/8/7
     * @param occupied 1
     * @return java.util.List<Role>
     **/
    List<Role> findRoleByRoleKeyList(List<Long> occupied);

    /**
     * Description:
     * <根据用户列表获取用户下的角色>
     * @author wupanhua
     * @date 10:47 2019/8/7
     * @param free 1
     **/
    void updateRoleStatusDeleteBykeys(List<Long> free);

    /**
     * Description:
     * <根据用户列表获取用户下的角色>
     * @author wupanhua
     * @date 10:47 2019/8/7
     * @param users 1
     * @return java.util.List<UserUnionRole>
     **/
    List<UserUnionRole> findUserRoleByUserList(List<User> users);

    /**
     * Description:
     * <根据name查询角色>
     * @author pig
     * @date 10:48 2019/8/7
     * @param name 1
     * @return java.util.List<Role>
     **/
    List<Role> findRolrByName(String name);

    /**
     * Description:
     * <根据编码查询角色信息>
     * @author pig
     * @date 10:48 2019/8/7
     * @param code 1
     * @return java.util.List<Role>
     **/
    List<Role> findRoleByCode(String code);

    /**
     * Description:
     * <根据name查询角色时筛除传来id的数据>
     * @author pig
     * @date 10:48 2019/8/7
     * @param role 1
     * @return java.util.List<Role>
     **/
    List<Role> findRolrByNameOrNotInId(Role role);

    /**
     * Description:
     * <查询全部角色名称>
     * @author yangliu
     * @date 10:48 2019/8/7
     * @return java.util.List<java.lang.String>
     **/
    List<String> queryAllRoleName();
}
